package co.saen.nextincloud.beans;

import co.saen.nextincloud.dao.ProfilesDAO;
import co.saen.nextincloud.model.Profiles;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

/**
 *
 * @author Felipe Rolvar
 */
@ManagedBean(name = "profileBean")
@SessionScoped
public class ProfileBean implements Serializable{

    private Profiles profile;
    private List<Profiles> profiles;
    //constructor vacio

    public ProfileBean() {
    }

    //Método para Actualizar un Perfil
    public void prepareUpdate(String prfCode) {
        ProfilesDAO profilesDAO = new ProfilesDAO();
        profile = profilesDAO.searchProfileById(prfCode);
    }

    public void updateProfile(ActionEvent actionEvent) {
        String resultado;
        ProfilesDAO profilesDAO = new ProfilesDAO();
        resultado = profilesDAO.updateProfile(profile);
        FacesContext context = FacesContext.getCurrentInstance();
        if (resultado.equals("ok")) {
            context.addMessage(null, new FacesMessage("Datos Actualizados Correctamente", null));
        } else {
            context.addMessage(null, new FacesMessage("Error Actualizando los Datos: " + resultado, null));
        }
    }

    //Método para Crear un nuevo Perfil
    public void prepareCreate(){
        profile = new Profiles();
    }
    
    public void createProfile() {
        String resultado;
        ProfilesDAO profilesDAO = new ProfilesDAO();
        profile.setPrfMenuExit(true);
        profile.setPrfMenuImpr(true);
        profile.setPrfMenuMngm(true);
        profile.setPrfMenuTool(true);
        resultado = profilesDAO.createProfile(profile);
        FacesContext context = FacesContext.getCurrentInstance();
        if (resultado.equals("ok")) {
            context.addMessage(null, new FacesMessage("Perfil Creado Correctamente", null));
        } else {
            context.addMessage(null, new FacesMessage("Error creando el Perfil: " + resultado, null));
        }
    }

    //Método para Eliminar un Perfil
    public void deleteProfile(ActionEvent actionEvent, String code) {
        String resultado;
        ProfilesDAO profilesDAO = new ProfilesDAO();
        profile = profilesDAO.searchProfileById(code);
        resultado = profilesDAO.deleteProfile(profile);
        FacesContext context = FacesContext.getCurrentInstance();
        if (resultado.equals("ok")) {
            context.addMessage(null, new FacesMessage("Perfil Eliminado Correctamente", null));
        } else {
            context.addMessage(null, new FacesMessage("Error creando el Perfil: " + resultado, null));
        }
    }

    //Seter y Getter Perfil
    public Profiles getProfile() {
        if (profile == null) {
            profile = new Profiles();
        }
        return profile;
    }

    public void setProfile(Profiles profile) {
        this.profile = profile;
    }

    //Setter y Getter de Lista de Perfiles
    public List<Profiles> getProfiles() {
        ProfilesDAO profilesDAO = new ProfilesDAO();
        profiles = profilesDAO.listOfProfiles();
        return profiles;
    }

    public void setProfiles(List<Profiles> profiles) {
        this.profiles = profiles;
    }
}